package 树;

public class Leedcode965单值二叉树 {
    /**
     * 传入一个树根，就可以判断是否为单值二叉树
     * @param root
     * @return
     */
    public boolean isUnivalTree(TreeNode root) {
        //如果root为空，直接退出
        if (root == null){
            return true;
        }
        //走到这里说明至少存在一个节点
        int val = (int) root.val;
        return isSample(root,val);
    }

    private boolean isSample(TreeNode root, int val) {
        //节点为空，直接返回
        if (root == null){
            return true;
        }
        //先比较当前值和val是否相等
        if ((int)root.val != val){
            return false;
        }
        //如果相等，判断左子树
        boolean sample = isSample(root.left, val);
        //如果左子树false，就不是单值二叉树，直接返回false；
        if (!sample){
            return false;
        }else {
            return isSample(root.right,val);
        }
    }
}
